package com.yeyks.hotel.service;

import com.yeyks.common.ajax.AjaxResponseBody;
import com.yeyks.common.appcommon.dto.account.AppAccountDTO;
import com.yeyks.common.appcommon.dto.room.AppRoomCalendarDTO;
import com.yeyks.common.appcommon.param.room.AddRoomCalendarParam;
import com.yeyks.common.appcommon.param.room.GetRoomCalendarParam;
import com.yeyks.common.appcommon.param.room.UpdateRoomCalendarParam;
import com.yeyks.common.appcommon.result.CommonResult;
import com.yeyks.hotel.dal.domain.RoomInfo;
import com.yeyks.hotel.dal.domain.RoomCalendarInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yeyks.hotel.param.UpdateRoomCalendarBatchParam;

import java.util.List;


/**
 * <p>
 * 房间日历信息表 服务类
 * </p>
 *
 * @author yun
 * @since 2019-06-25
 */
public interface RoomCalendarInfoService extends IService<RoomCalendarInfo> {


    void createRoomCalendarInfoDo(List<RoomInfo> roomInfos);

    /**
     * 初始化一个月房态信息
     * @param roomInfo
     * @return
     */
    void initRoomCalendar(RoomInfo roomInfo);

    /**
     * 更新单个房态信息，如果上架操作则同时上架房间
     * @param roomCalendarInfo
     * @return
     */
    AjaxResponseBody updateRoomCalendar(RoomCalendarInfo roomCalendarInfo);

    /**
     * 批量更新一个月房态信息
     * @param updateRoomCalendarBatchParam
     * @return
     */
    AjaxResponseBody updateRoomCalendarBatch(UpdateRoomCalendarBatchParam updateRoomCalendarBatchParam);

    /**
     * 查询出一个月的房态信息
     * @param roomId
     * @return
     */
    List<RoomCalendarInfo> selectRoomCalendar(Integer roomId);








    //=============================admin-app 房态接口============================
    /**
     * 添加房态信息
     * @param addRoomCalendarParam 输入参数信息
     * @param accountDTO 操作账户信息
     * @return 返回结果
     */
    CommonResult addRoomCalendar(AddRoomCalendarParam addRoomCalendarParam, AppAccountDTO accountDTO);

    /**
     * 得到房态30天数据信息
     * @param getRoomCalendarParam 输入查询参数
     * @param convert 操作账户信息
     * @return 返回结果
     */
    CommonResult<List<AppRoomCalendarDTO>> getRoomCalendar(GetRoomCalendarParam getRoomCalendarParam, AppAccountDTO convert);

    /**
     * 修改房态信息
     * @param param 输入查询信息
     * @param accountDTO  操作账户信息
     * @return 返回结果
     */
    CommonResult updateRoomCalendar(UpdateRoomCalendarParam param, AppAccountDTO accountDTO);

    /**
     * 修改房态状态
     *
     * @param id
     * @param status
     */
    int updateRoomCalendarStatus(Integer id, int status);

    /**
     * 修改房态状态
     *
     * @param ids
     * @param status
     */
    Boolean updateRoomCalendarStatusList(List<Integer> ids, int status);
}
